package xqp.mq._03_fanout;

import com.rabbitmq.client.BuiltinExchangeType;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import java.io.IOException;
import java.util.concurrent.TimeoutException;


/**
 * 广播模式  只要绑定了交换机队列都会接收到
 * 生产者步骤
 * 1. 创建连接
 * 2. 创建通道
 * 3. 创建交换机
 * 4. 发送消息
 */


//生产者
public class Producer {

    // 定义一个交换机名字的常量
    public static final String NAME_EXCHANGE_FANOUT = "NAME_EXCHANGE_FANOUT";

    public static void main(String[] args) throws IOException, TimeoutException {
        // 通过工厂创建连接对象
        ConnectionFactory factory = new ConnectionFactory();
        Connection connection = factory.newConnection();

        // 通过连接对象创建通道
        Channel channel = connection.createChannel();

        // 通过通道创建指定的交换机  第一个参数是交换机的名字  第二个参数是交换机的类型
        channel.exchangeDeclare(NAME_EXCHANGE_FANOUT, // 交换机的名字
                BuiltinExchangeType.FANOUT); // 交换机的类型

        // 发送消息
        channel.basicPublish(NAME_EXCHANGE_FANOUT,// 交换机的名字
                "" , // 队列的名字  只要绑定了我们现在创建的交换机的所有队列都会获得消息所以这里不需要routing key
                null, // 其他参数
                "稳住兄弟".getBytes());
        System.out.println("消息已发送");
    }
}
